Built-in debug feature for complex VLSI chip

ABSTRACT

An apparatus comprising (i) a first circuit configured to generate one or more node signals at one or more internal nodes and (ii) a second circuit configured to present one or more of the node signals and a trigger signal in response to one or more control signals.

FIELD OF THE INVENTION

[0001] The present invention relates to integrated circuit testing generally and, more particularly, to a built-in debug feature for complex very large scale integrated (VLSI) chips.

BACKGROUND OF THE INVENTION

[0002] Testing integrated circuits is expensive and time consuming. Complex very large scale integrated (VLSI) chips can have millions of internal nodes. Probing all of the nodes in the silicon during a debug process is difficult.

[0003] Existing solutions are inefficient, time consuming and expensive. Existing test methods include opening up a chip and using an electronic probing device. Opening up a chip can destroy the chip. Electronic probing tests one node at a time. The entire set up (i.e., chip, circuit board and system) can be too large to fit inside a vacuum chamber. Testing can require special infinite loop test patterns. However, the test patterns may not be able to reproduce the problem.

[0004] It would be desirable to implement a built-in logic to allow observation of internal nodes of a chip under normal operating conditions.

SUMMARY OF THE INVENTION

[0005] The present invention concerns an apparatus comprising (i) a first circuit configured to generate one or more node signals at one or more internal nodes and (ii) a second circuit configured to present one or more of the node signals and a trigger signal in response to one or more control signals.

[0006] The objects, features and advantages of the present invention include providing a built-in debug feature for complex very large scale integrated (VLSI) chips that may (i) provide built-in logic to present signal levels at selected internal nodes to an internal register or external I/O ports, (ii) select the internal nodes under control of a programmable register, (iii) generate a trigger signal, (iv) start and stop an internal clock, (v) provide a single-step operation, (vi) work under normal operating conditions, (vii) capture signal levels at many nodes simultaneously, (viii) be implemented with low cost, (ix) operate without special lab equipment, (x) allow node waveforms to be captured by an external logic analyzer, (xi) allow node waveforms to be captured by an external PC, (xii) capture node waveforms with an internal processor and/or (xiii) be implemented in both digital and analog circuits.

BRIEF DESCRIPTION OF THE DRAWINGS

[0007] These and other objects, features and advantages of the present invention will be apparent from the following detailed description and the appended claims and drawings in which:

[0008]FIG. 1 is a block diagram of a preferred embodiment of the present invention;

[0009]FIG. 2 is a block diagram of another preferred embodiment of the present invention; and

[0010]FIGS. 3A and 3B are flow diagrams of example operations in accordance with a preferred embodiment of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0011] Referring to FIG. 1, a block diagram of a circuit 100 is shown in accordance with a preferred embodiment of the present invention. The circuit 100 may comprise, in one example, a complex very large scale integrated circuit. In one example, the circuit 100 may be implemented as a logic module of a programmable logic device (circuit). The circuit 100 may have an output 102 that may present a signal (e.g., OBS), an output 104 that may present a signal (e.g., TRG) and an input 106 that may receive a signal (e.g., DBG_SLCT). The signal OBS may comprise one or more internal signals of the circuit 100. For example, the signal OBS may be a multi-bit signal where each of the bits may represent a signal of a different internal node. The signal TRG may be implemented, in one example, as a trigger signal. The signal TRG may have an asserted state that generally corresponds to a valid state of the signal OBS. The signal DBG_SLCT may be implemented as a control signal. The signal DBG_SLCT may, in one example, comprise one or more control signals. For example, the signal DBG_SLCT may be a multi-bit signal where each of the bits may be implemented as an independent control signal.

[0012] The circuit 100 may be configured to present the signals OBS and TRG in response to the signal DBG_SLCT. The outputs 102 and 104 may be configured to present output signals of the circuit 100 in a first mode and debug signals (e.g., internal node signals) in a second mode. In one example, the mode of the outputs 102 and 104 may be controlled in response to a debug flag (e.g., a bit in a debug register within the circuit 100). The circuit 100 may be configured to present the signals OBS and TRG while running at normal (or full) operating speed. Alternatively, the circuit 100 may be configured to provide a single-stepping mode.

[0013] The circuit 100 may comprise logic and/or analog circuitry 108. The circuitry 108 may comprise a number of internal nodes 110 a-110 n. Node signals present at the internal nodes 110 a-110 n are generally indicative of an operating condition of the circuit 100. In general, a debug process for the circuit 100 may involve measurement (or observation) of one or more of the node signals presented at the internal nodes 110 a-110 n.

[0014] The circuit 100 may further comprise a circuit 112. The circuit 112 may have a number of inputs 114 a-114 n that may be configured to receive (or monitor) the signals from the nodes 110 a-110 n.

[0015] The circuit 112 is generally configured to generate the signals OBS and TRG in response to the signals received at the inputs 114 a-114 n and the signal DBG_SLCT.

[0016] The circuit 112 may comprise, in one example, a circuit 116 and a circuit 118. The circuit 116 may be implemented, in one example, as a multiplexer circuit. The circuit 118 may be implemented, in one example, as a trigger generation circuit. In an alternative example, the circuit 118 may be implemented as a multiplexer circuit. The circuit 116 may have a number of inputs 120 a-120 n that may receive the signals generated by the internal nodes 110 a-110 n and an input 122 that may receive the signal DBG_SLCT. The circuit 116 may be configured to generate the signal OBS in response to the signals received from the nodes 110 a-110 n and the signal DBG_SLCT. In one example, the circuit 116 may be configured to select one or more of the signals received from the internal nodes 110 a-110 n for presentation as the signal OBS in response to the signal DBG_SLCT. In another example, all of the signals received from the internal nodes 110 a-110 n may be multiplexed (e.g., time division multiplexed) onto the signal OBS in response to the signal DBG_SLCT.

[0017] The circuit 118 may have a number of inputs 124 a-124 n that may receive the signals generated at the internal nodes 110 a 110 n and an input 126 that may receive the signal DBG_SLCT. The circuit 118 may be configured to generate the signal TRG in response to the signals received from the internal nodes 110 a-110 n and the signal DBG_SLCT. In one example, the circuit 118 may be configured to generate the signal TRG in response to a logical combination of one or more of the signals received from the internal nodes 110 a-110 n. The particular logical combination implemented and/or the particular signals combined may be controlled in response to the signal DBG_SLCT. For example, in a preferred embodiment the circuit 118 may be configured to generate the signal TRG as a logical AND of all of the signals received from the internal nodes 110 a-110 n. However, other logical combinations may be implemented accordingly to meet the design parameters of the particular application.

[0018] In an alternative embodiment, the circuit 118 may be implemented as a multiplexer circuit. When the circuit 118 is implemented as a multiplexer circuit, the signal TRG may be generated in response to one or more of the signals received from the internal nodes 110 a-110 n selected in response to the signal DBG_SLCT. The signal TRG may be implemented to trigger a logic analyzer (e.g., either internal or external) to capture the signals received from the internal nodes 110 a-110 n.

[0019] A circuit 128 may be configured to generate the signal DBG_SLCT. In one example, the circuit 128 may be implemented externally to the circuit 100. Alternatively, the circuit 128 may be implemented internally to the circuit 100. In one example, the circuit 128 may comprise a register 130. The register 130 may be implemented as a debug register. The register 130 may be programmed according to predefined criteria. The signal DBG_SLCT may be generated in response to contents of the register 130.

[0020] Referring to FIG. 2, a block diagram of a system 200 is shown in accordance with a preferred embodiment of the present invention. The system 200 may comprise a number of circuits 100 a-100 n. Each of the circuits 110 a-100 n may be implemented similarly to the circuit 100 of FIG. 1. For example, the system 200 may be implemented as a programmable logic device and each of the circuits 110 a-100 n may be implemented as a logic module of the system 200. The system 200 may further comprise a circuit 202, a circuit 204 and a circuit 206. The circuit 202 may be implemented, in one example, as a clock control circuit. The circuit 204 may be implemented as a monitor circuit. The circuit 206 may be implemented as a control circuit.

[0021] In one example, the circuit 202 may have a first input that may receive a signal (e.g., SYS_CLK), a second input that may receive a signal (e.g., SS) and an output that may present a signal (e.g., CLK). The signal CLK may be generated in response to the signals SYS_CLK and SS. The signals SYS_CLK and CLK may be clock signals. The signal SS may be implemented as a control signal. In one example, the circuit 202 may be configured to generate the signal CLK having (i) a similar frequency to the signal SYS_CLK when the signal SS is in a first state (e.g., unasserted) and/or (ii) a single pulse of the signal SYS_CLK in response to a second state (e.g., asserted) of the signal SS. The signal CLK may be presented to a respective input 208 a-208 n of each of the circuits 100 a-100 n. The signal SS may be implemented, in one example, to provide both full speed (e.g., for real-time observation and/or measurement) and single-step operation of the system 200.

[0022] The circuit 204 may have a number of inputs 210 a-210 n that may receive a number of signals (e.g., OBS_A-CBS_N) from the circuits 100 a-100 n, a number of inputs 212 a-212 n that may receive a number of signals (e.g., TRG_A-TRG_N) from the circuits 100 a-100 n, an input 214 that may receive a signal (e.g., GLBL_SLCT), an output 216 that may present a signal (e.g., GLOBAL_OBS) and an output 218 that may present a signal (e.g., GLOBAL_TRG). The circuits 100 a-100 n may be configured to generate the signals OBS_A-OBS_N and TRG_A-TRG_N in response to a number of control signals (e.g., DBG_SLCT_A-DBG_SLCT_N). The circuit 204 may be configured to generate the signals GLOBAL_OBS and GLOBAL_TRG in response to the signals OBS_A-OBS_N, TRG_A-TRG_N and GLBL_SLCT.

[0023] The circuit 204 may be implemented similarly to the circuit 112 (described above in connection with FIG. 1). In one example, the circuit 204 may comprise a circuit 220 and a circuit 222. The circuit 220 may be implemented as a multiplexer circuit. The circuit 222 may be implemented, in one example, as a trigger generator circuit. The circuit 220 may be configured to select one or more of the signals OBS_A-OBS_N for presentation as the signal GLOBAL_OBS in response to the signal GLOBAL_SLCT.

[0024] The circuit 222 may be configured to generate the signal GLOBAL_TRG in response to the signals TRG_A-TRG_N and the signal GLOBAL_SLCT. In one example, the circuit 222 may be configured to generate the signal GLOBAL_TRG in response to a logical combination of one or more of the signals TRG_A-TRG_N selected in response to the signal GLOBAL_SLCT. Alternatively, the signal GLOBAL_SLCT may be configured to select the signals TRG_A-TRG_N that are logically combined and/or the logical function applied. The signal GLOBAL_TRG may be configured to trigger an external logic analyzer. For example, the external logic analyzer may be configured to capture the internal node signals presented at the I/Os of the system 200 in response to the signal GLOBAL_TRG.

[0025] The circuit 206 may be configured to generate the signals GLBL_SLCT and DBG_SLCT_A-DBG_SLCT_N according to predetermined criteria. In one example, the circuit 206 may be implemented as a debug register that may be programmed in response to a predefined debug (or test) procedure. The circuit 206 may be further configured to generate a signal (e.g., DBG_FLAG). In one example, the signal DBG_FLAG may be implemented as an internal debug flag. In one example, the signal DBG_FLAG may be asserted in response to software programming of an internal register bit. The signal DBG_FLAG may be asserted to indicate a debug mode of the system 200.

[0026] The signal GLOBAL_OBS may be presented to an input of a circuit 224. The circuit 224 may be implemented, in one example, as a capture register. However, other storage elements may be implemented accordingly to meet the design criteria of a particular application. For example, the circuit 224 may be implemented with latches, flip-flops, sample and hold circuits, etc. In one example, the circuit 224 may be configured to latch the signal GLOBAL_OBS in response to the signal GLOBAL_TRG.

[0027] The system 200 may comprise a number of I/O pads 226 a-226 n. In one example, the signal GLOBAL_OBS, registered and/or unregistered, and the signal GLOBAL_TRG may be multiplexed on the I/O pads with other input/output signals in response to the signal DBG_FLAG. In one example, the signals GLOBAL_OBS and GLOBAL_TRG may be presented to external circuitry via the pads 226 a-226 n when the signal DBG_FLAG is in a first state (e.g., an asserted state). I/O signals of the system 200 may be presented via the pads 226 a-226 n when the signal DBG_FLAG is in a second state (e.g., an unasserted state). The selection of internal signals (e.g., the node signals from the circuits 100 a-100 n) presented at the pads 226 a-226 n may be controlled, in one example, in response to software instructions. In one example, the system 200 may have a limited number of I/O pads available. However, when a limited number of pads are available, the system 200 may be configured to present all of the internal nodes via, in one example, a time division multiplex scheme.

[0028] Referring to FIG. 3A, a flow diagram 300 illustrating an example debug operation in accordance with a preferred embodiment of the present invention is shown. When the circuit 100 and the system 200 are not in a debug mode, the circuit 100 and the system 200 generally operate according to a predefined function and the debug circuitry is generally transparent to the external environment of the chip (e.g., the blocks 302 and 304). When the circuit 100 and system 200 are in a debug mode, the circuit 100 and the system 200 may be configured to operate in a full speed mode and/or a single-step mode (e.g., the block 306). When the single-step mode is selected, an internal clock may be single-stepped (e.g., the block 308). The internal nodes of the circuit 100 or system 200 are generally scanned, the values stored in a capture register and a trigger signal generated (e.g., the block 310). While the circuit 100 and the system 200 are in the debug mode, the scans of the internal nodes may be repeated (e.g., the pathway 312).

[0029] Referring to FIG. 3B, a flow diagram 320 illustrating another example operation in accordance with a preferred embodiment of the present invention is shown. In one example, an internal or external processor (or logic analyzer) may be configured to read the capture register (or the signal GLOBAL_OBS) in response to the signal GLOBAL_TRG (e.g., the block 322). The internal or external processor generally reads values from the capture register in response to an asserted state of the signal GLOBAL_TRG (e.g., the block 324). The values read from the capture register 220 may be added to a database comprising values for one or more of the internal nodes (e.g., the nodes 110 a-110 n of FIG. 1) for each clock cycle (e.g., the block 326). The internal/external processor may be configured in response to computer readable instructions to generate and/or display one or more waveforms representative of the signals at each of the internal nodes of the circuit 100 or system 200 in response to the values stored in the database (e.g., the block 328). When an internal processor is used to generate the waveforms, the circuit 100 may be configured to provide a logic analyzer function.

[0030] The function performed by the flow diagrams 300 and 320 of FIGS. 3A and 3B, respectively, may be implemented using a conventional general purpose digital computer programmed according to the teachings of the present specification, as will be apparent to those skilled in the relevant art (s). Appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure, as will also be apparent to those skilled in the relevant art(s). The present invention may also be implemented by the preparation of ASICs, FPGAs, or by interconnecting an appropriate network of conventional component circuits, as is described herein, modifications of which will be readily apparent to those skilled in the art(s).

[0031] The present invention thus may also include a computer product which may be a storage medium including instructions which can be used to program a computer to perform a process in accordance with the present invention. The storage medium can include, but is not limited to, any type of disk including floppy disk, optical disk, CD-ROM, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, Flash memory, magnetic or optical cards, or any type of media suitable for storing electronic instructions.

[0032] The various signals of the present invention are generally shown on individual inputs and outputs. In other embodiments, some or all of the various signals may be multiplexed through one or more inputs and/or outputs as desired or required. The various signals of the present invention may be implemented as single-bit or multi-bit signals in a serial and/or parallel configuration.

[0033] The various signals of the present invention are generally “on” (e.g., a digital HIGH, or 1) or “off” (e.g., a digital LOW, or 0). However, the particular polarities of the on (e.g., asserted) and off (e.g., unasserted) states of the signals may be adjusted (e.g., reversed) accordingly to meet the design criteria of a particular implementation. Additionally, inverters may be added to change a particular polarity of the signals.

[0034] As used herein, the term “simultaneously” is meant to describe events that share some common time period but the term is not meant to be limited to events that begin at the same point in time, end at the same point in time, or have the same duration.

[0035] While the invention has been particularly shown and described with reference to the preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made without departing from the spirit and scope of the invention. 

1. An apparatus comprising: a first circuit configured to generate one or more node signals at one or more internal nodes; and a second circuit configured to present one or more of said node signals and a trigger signal in response to one or more control signals.
 2. The apparatus according to claim 1, wherein said node signals are generated at a plurality of internal nodes of said apparatus and are indicative of an operating condition of said apparatus.
 3. The apparatus according to claim 1, wherein said one or more node signals are presented at an external I/O port of an integrated circuit.
 4. The apparatus according to claim 1, wherein said node signals are multiplexed in response to said one or more control signals.
 5. The apparatus according to claim 1, wherein said first circuit comprises a logic module of an integrated circuit.
 6. The apparatus according to claim 1, wherein said first circuit comprises analog circuitry of an integrated circuit.
 7. The apparatus according to claim 1, wherein said second circuit comprises a multiplexer configured to present said one or more node signals in response to said one or more control signals.
 8. The apparatus according to claim 7, wherein said second circuit further comprises a logic circuit configured to generate said trigger signal in response to said node signals and said one or more control signals.
 9. The apparatus according to claim 1, wherein said second circuit comprises a register configured to present said one or more control signals.
 10. The apparatus according to claim 3, wherein said external I/O port is configured (i) to present I/O signals in response to a first state of a flag and (ii) to present said node signals in response to a second state of said flag.
 11. The apparatus according to claim 1, further comprising an internal clock circuit configured to generate a single clock pulse in response to one or more of said control signals.
 12. The apparatus according to claim 1, wherein: said first circuit comprises one or more logic modules comprising one or more internal nodes at which said node signals are generated; and said second circuit comprises (i) a multiplexer configured to select one or more of said node signals in response to said one or more control signals, (ii) a logic circuit configured to generate said trigger signal in response to a logical combination of said node signals and said one or more control signals and (iii) a register configured to generate said one or more control signals.
 13. An integrated circuit comprising: means for presenting one or more signals generated at a plurality of internal nodes of said integrated circuit and a trigger signal in response to one or more control signals; and means for generating said one or more control signals.
 14. A method for debugging complex very large scale integrated circuits comprising: generating one or more control signals; and presenting one or more signals generated at a plurality of internal nodes of said integrated circuit and a trigger signal in response to said one or more control signals.
 15. The method according to claim 14, wherein said one or more control signals are generated in response to contents of a register.
 16. The method according to claim 14, further comprising: multiplexing said one or more signals generated at said plurality of internal nodes.
 17. The method according to claim 14, further comprising: logically combining one or more of said signals generated at said plurality of internal nodes to generate said trigger signal.
 18. The method according to claim 14, further comprising: storing a value of each of said one or more signals generated at said plurality of internal nodes in response to said trigger signal.
 19. The method according to claim 18, further comprising: generating a database of said values for each of a plurality of clock cycles.
 20. The method according to claim 19, further comprising: generating a waveform for each of said plurality of internal nodes in response to said valves in said database. 